QT  += core gui svg dbus xml
QT  += gui-private

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = deepin-devicemanager

TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the$
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS


#QT_SCALE_FACTOR=1.5

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

# QMAKE_CXXFLAGS += `cups-config --cflags` `cups-config --libs`

LIBS += -lcups
# 指定要链接到项目的库列表。如果使用 Unix -l(库) 和 -L(库路径)标志，则qmake 可以在 Windows 上正确处理库(即，将库的完整路径传递给链接器)。
# qmake 必须存在该库才能打到 -l lib 所在的目录。

CONFIG  += c++11
# 启用 C++11 支持
CONFIG  += link_pkgconfig
# link_prl, 启动此选项后，qmake 将处理该应用程序链接的所有库并找到其元信息(有关更多信息，请参见库依赖关系)
# 补充：通常，在链接到库时，qmake依赖基础平台来了解该库链接到的其他库，并允许平台将它们引入。但是，在许多情况下，这还不够。
# 列如：当静态链接一个库时，没有其他库被链接，因此不创建对这些库的依赖关系。但是，以后与此库链接的应用程序将需要知道在哪里可以找到静态库所需要符号。
# 如果显式启用跟踪，则 qmake 尝试在适当的情况下跟踪库的依赖项。

#qmake 将使用它来确定相关的链接信息，特别是将值添加到应用程序项目文件的 DEFINES 以及 LIBS 列表中。
# 一旦 qmake 处理了该文件，它将在 LIBS 变量中浏览新引入的库，并打到它们的相关 .prl 文件，直到所有库都被解析为止。
# 此时，将像往常一样创建 Makefile，并且将库与 应用程序明确链接。

PKGCONFIG   += dtkwidget dframeworkdbus
# 使用 pkg-config 找到该指定库的链接信息

TRANSLATIONS += ../translations/*.ts
# 指定翻译(.ts)文件的列表，这些文件包含用户界面文件到非本场语言的翻译。

# lrelease 和使用 lupdate 工具都将处理 TRANSLATIONS 中翻译文件。如果只希望 lrelease 处理文件，请使用 EXTRA_TRANSLATIONS.

# 您可以使用 CONIG += lrelease 自动在编译过程中编译文件，并使用 CONFIG += lrelease embed_translations 使它们在 Qt 资源系统中可用。

# 有关 Qt 的国际化 (i18n) 和本地化(I10n) 的更多信息，请参见 << Qt 语言学家手册 >>(Qt Linguist Manual)

INCLUDEPATH +=     \
            /usr/include/cups/ \
            /usr/include/libdframeworkdbus-2.0/ \
# 指定编译项目时应搜索的 #include 目录
# example: c:/msdev/include d:/stl/include
# example: /usr/include

include(../thirdlib/QtXlsxWriter/src/xlsx/qtxlsx.pri)
include(../thirdlib/docx/docx.pri)
#

CONFIG(debug, debug|release) {
# 该项目将以调试模式构建
    TRANSLATIONS = $$files($$PWD/../translations/*.ts)
    #遍历目录中的ts文件，调用lrelease将其生成为qm文件
    for(tsfile, TRANSLATIONS) {
        qmfile = $$replace(tsfile, .ts$, .qm)
        system(lrelease $$tsfile -qm $$qmfile) | error("Failed to lrelease")
    }
    #将qm文件添加到安装包
    dtk_translations.path = /usr/share/$$TARGET/translations
    dtk_translations.files = $$PWD/../translations/*.qm
    INSTALLS += dtk_translations
}
#LIBS += -L/usr/lib/x86_64-linux-gnu/ -lhd
#LIBS += -L../thirdlib/hd -lhd

SOURCES += \
    cdromwidget.cpp \
    cloumnwidget.cpp \
    logtreeview.cpp \
    logviewheaderview.cpp \
    logviewitemdelegate.cpp \
    main.cpp \
    mainwindow.cpp \
    deviceinfoparser.cpp \
    deviceinfowidgetbase.cpp \
    computeroverviewwidget.cpp \
    motherboardwidget.cpp \
    cpuwidget.cpp \
    memorywidget.cpp \
    diskwidget.cpp \
    displayadapterwidget.cpp \
    monitorwidget.cpp \
    audiodevicewidget.cpp \
    networkadapterwidget.cpp \
    camerawidget.cpp \
    keyboardwidget.cpp \
    mousewidget.cpp \
    otherdevicewidget.cpp \
    usbdevicewidget.cpp \
    powerwidget.cpp \
    otherpcidevice.cpp \
    logpasswordauth.cpp \
    printerwidget.cpp \
    devicelistview.cpp \
    deviceattributedefine.cpp \
    bluetoothwidget.cpp \
    bottomroundframe.cpp \
    edidparser.cpp
# 指定项目中所有源文件的名称

HEADERS += \
    cdromwidget.h \
    cloumnwidget.h \
    commondefine.h \
    logtreeview.h \
    logviewheaderview.h \
    logviewitemdelegate.h \
    mainwindow.h \
    otherdevicewidget.h \
    deviceinfoparser.h \
    deviceattributedefine.h \
    deviceinfowidgetbase.h \
    computeroverviewwidget.h \
    singletondef.h \
    motherboardwidget.h \
    cpuwidget.h \
    memorywidget.h \
    diskwidget.h \
    displayadapterwidget.h \
    monitorwidget.h \
    audiodevicewidget.h \
    networkadapterwidget.h \
    bluetoothwidget.h \
    camerawidget.h \
    keyboardwidget.h \
    powerwidget.h \
    mousewidget.h \
    usbdevicewidget.h \
    otherpcidevice.h \
    logpasswordauth.h \
    printerwidget.h \
    devicelistview.h \
    bottomroundframe.h \
    edidparser.h
# 定义项目的头文件

# qmake 自动检测标头中的类是否需要 moc, 并将适当的依赖项和文件添加到项目中以生成和链接 moc 文件

# Default rules for deployment.
#qnx: target.path = /tmp/$${TARGET}/bin
#else: unix:!android: target.path = /opt/$${TARGET}/bin
#!isEmpty(target.path): INSTALLS += target


RESOURCES += appimage.qrc
# 指定目录的资源收集文件(qrc)的名称。有关资源收集文件的更多信息，请参见 Qt 资源系统。
# 补：Qt资源系统
# Qt 资源系统是一种与平台无关的机制，用于在应用程序的可执行文件中存储二进制文件。
# 如果您的应用程序需要一组特定的文件(图标，翻译文件等)，并且您不想冒丢失文件的风险，这将很有用。

# 资源系统基于 qmake, rcc (Qt的资源编译器)和 QFile之间的紧密合作

DISTFILES += \
    ../README.md \
    ../debian/control \
    ../debian/rules \
    ../translations/*.ts \
    ../translations/*.qm
# 指定要包含在 dist 目标中的文件列表。仅 UnixMake 规范支持此功能

# target
target.path = /usr/bin/

# icons
#icons.files += ../images/cpu.svg
#icons.path = /usr/share/deepin-devicemanager/
icons.path = /usr/share/icons/hicolor/scalable/apps
icons.files = ../icons/deepin/builtin/deepin-devicemanager.svg

# desktop
desktop.files += deepin-devicemanager.desktop
desktop.path = /usr/share/applications/

translations.path = /usr/share/deepin-devicemanager/translations
translations.files = ../translations/*.qm

INSTALLS += target icons desktop translations
# 指定执行 make install 或类似安装过程时将安装的资源列表。列表中的每个项目通常都定义有属性，这些属性提供有关安装位置的信息。

# 例如：以下 target.path 定义描述了构建目标的安装位置，并且 INSTALLS 分配将构建目标添加到要安装的现有资源列表中。
# target.path += $$[QT_INSTALL_PLUGINS]/ingageformats
# INSTALLS += target
